跳至主要内容

More SQL

  1. 基本SQL & 概念

Index, pri/f key INSERT DELETE


快速複習!

欄位名稱跟table名稱要加重音符號(`)!
查詢:
SELECT * FROM <table> WHERE <condition>

觀念:欄位的Key設定


Index (索引鍵)

  • 資料索引,可加快搜尋速度
  • 可多欄位設定為 Index

NOTE:有點像是看書的時候的頁碼,方便你定位


Primary Key(PK):

常用來連接不同table之間的查詢/關聯(F Key)

  • 是一種 index 但不能為空值(NULL),PK會自動建立 index
  • 每個 table 只能有一個 PRIMARY Key
  • 每一筆資料的PK都要獨一無二(不一樣)

NOTE:你如果有uid,就可以很快定義出具體的某比資料,就如同你有頁碼,就可以很快找到某一頁


Foreign Key(FK):

table之間的愛恨情愁

  • 避免表之間的關聯被破壞
  • 防止不符合對應欄位的型態
  • 插入的值一定要在對應的表

NOTE: 用個例子來解釋一下,這是兩張表,上面的叫做Persons,下面的叫做Orders。PersonID是上面表的PK,它每筆資料都一定會有。下面的表格用到PersonID、用到對方的PK,所以建立起了關聯。它對應到別張表的這個欄位就可以設定成FOREIGN KEY,所以邊PersonID就是Foreign Key,它可以讓資料庫自動避免關聯被破壞,避免像是Persons被刪除,Orders對應不到,或是欄位資料內容不對。


哪個是FK?

NOTE: 哪個欄位是FK呢?這邊可以看到有關連的部份只有country_code和code,可以注意到有*和數字1,星號是說,很多比紀錄的這個欄位可以值一樣,像是我和你分別是兩比紀錄,而且都住台灣,那我們的country_code就會一樣。 而那個1就是指說coutries這個table裡面的每一筆紀錄,code不會重複,就是說不會有兩個country名字不一樣,code卻一樣。答:country_code


實做一張表

右鍵點擊左邊的"Tables">"Create a table"

NOTE:講了那們多,我先來代你們用圖形界面實際做一張表,這樣你如果有想試試的操作就可以自己弄表跟資料了


  1. 打上Table name
  2. 點擊下方空白處可以設定column

試試看新增一張表,叫做user 裡面有

欄位欄位名稱
使用者UID
使用者居住地址City_Code
使用者名字username
使用者密碼password

NOTE:你們覺得哪個欄位要設定什麼型態?哪些要有Key?


query time!

NOTE:今天來說說新增跟刪除吧!


新增

INSERT INTO <table>(<column> [,<column2>,...])
VALUES(<value for col1> [, <value for col2>])

ex:

INSERT INTO `customer`(`nickname`, `password`)
VALUES ("Temmie", "Hoi_I_AM_TEMMIE")

練習!

幫你們剛剛的表新增3筆資料


刪除

DELETE FROM <table>
WHERE <condition>

NOTE:注意,操作資料庫的時候,尤其是刪除表或是資料的時候,一定要注意你的條件,避免勿刪,或是讓整個資料表清空。


試試看

刪掉Taiwan裡,City_code<100的


用Query創建表


創建表

CREATE TABLE <table_name> (
<column_name1> <data_type>,
<column_name2> <data_type>,
<column_name3> <data_type>,
···
);


做出一張表

table name: orders

名稱型態
ID數值,PK
username可變長度的字串
price???

NOTE: 要注意表的名稱要加s,因為order本身是SQL語法的詞,所以要避開。還有要先點選database指定它後,才能在Open SQL editor,底下用query生出table 這一部份,我想讓你們先是試著自己從網路查怎們樣在創建table時,設定PK


刪除表

DROP TABLE <table_name>;

補充資源:diagram

https://dbdiagram.io/home

NOTE:這是一個可以畫table關聯圖的網站,有興趣可以進去試試看。它預設的table關係可以參考一下,想想看表之間的關係。